//app.js
var config = require('./comm/script/config');
App({
  globalData: {
    userInfo: null
  },

  onLaunch: function () {

    // 获取用户信息
    this.getUserInfo();
    //初始化缓存
    this.initStorage();

  },

  /**获取用户信息 */
  getUserInfo: function (param) {
    param = param || {};
    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId

        // 获取用户信息
        wx.getSetting({
          success: res => {
            if (res.authSetting['scope.userInfo']) {
              // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
              wx.getUserInfo({
                success: res => {
                  // 可以将 res 发送给后台解码出 unionId
                  this.globalData.userInfo = res.userInfo;
                  //调用回调函数
                  typeof param.success == "function" && param.success(this.globalData.userInfo);

                  // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
                  // 所以此处加入 callback 以防止这种情况
                  if (this.userInfoReadyCallback) {
                    this.userInfoReadyCallback(res);
                  }

                }
              });
            }else{
              typeof param.fail == "function" && param.fail();
            }
          },
          fail: res => {
            typeof param.fail == "function" && param.fail();
          }
        });
      }
    });
  },

  /**
   * 初始化存储
   */
  initStorage: function () {
    wx.getStorageInfo({
      success: function (res) {
        console.log('initStorage' + res.keys)
        // 判断背景卡选择数据是否存在，没有则创建
        if (!('skin' in res.keys)) {
          wx.setStorage({
            key: 'skin',
            data: '',
          });
        }
      }
    });
  },

  /**
   * 通过百度sdk定位城市区域
   */
  getCity:function(cb){
    var that = this;
    wx.getLocation({
      type: 'gcj02',
      success: function(res) {
        console.log(res);
        var locationParam = res.latitude + ',' + res.longitude + '1';
        wx.request({
          url: config.apiList.baiduMap,
          data: {
            ak: config.baiduAK,
            location: locationParam,
            output: 'json',
            pois: '1'
          },
          method: 'GET',
          success: function(res){
            console.log(res);
            config.city = res.data.result.addressComponent.city.slice(0, -1);
            typeof cb == "function" && cb(res.data.result.addressComponent.city.slice(0, -1));
          },
          fail: function(res){
            //重新定位
            console.log("获取位置失败，重新定位");
            that.getCity();
          }
        });
      },
    });
  }

})